home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / MATHEMAT / STATISTI / 0850B.ZIP / SET2.ARC / BISERIAL.PAS < prev    next >
Pascal/Delphi Source File  |  1979-12-31  |  5KB  |  212 lines

  1. VAR SWITCH14,SWITCH4,DF,I,NUMSAMPS:INTEGER;
  2.     SWITCH13,SWITCH3,C:CHAR;
  3.     XY,SAMPLE1,SAMPLE2,COEFF,XT,XS,YS,YT,T1,T2,T3:REAL;
  4.     TEMP,Y,SWITCH:INTEGER;
  5.     XCOOR,YCOOR,SUMX,SUMY,SUMXSQR,SUMYSQR, SUMXTIMESY,
  6.     A1,A2,A3,A4,L,X,FACTOR1,FACTOR2,RIGHTTAIL,TVALUE,CRIT52,CRIT51,CRIT12,CRIT11:REAL;
  7.     SWITCH2,LESSTHANONE:BOOLEAN;
  8. {$I B:REALRAIS}
  9. {$I B:INTRAISE}
  10.  
  11. PROCEDURE FINDCRITICALVALUES (DEGFREE:INTEGER);
  12. VAR TEMP1,TEMP2:REAL;
  13.  
  14. PROCEDURE VALS(C52,C51,C12,C11:REAL);
  15. BEGIN
  16. CRIT52:=C52;
  17. CRIT51:=C51;
  18. CRIT12:=C12;
  19. CRIT11:=C11;
  20. END;
  21. PROCEDURE LOOKUP (DF:INTEGER);
  22. BEGIN
  23. CASE DF OF
  24. 1: VALS(0.988, 0.997, 0.9995, 0.9999);
  25. 2: VALS(0.900, 0.950, 0.980, 0.990);
  26. 3: VALS(0.805, 0.878, 0.934, 0.959);
  27. 4: VALS(0.729, 0.811, 0.882, 0.917);
  28. 5: VALS(0.669, 0.754, 0.833, 0.874);
  29. 6: VALS(0.622, 0.707, 0.789, 0.824);
  30. 7: VALS(0.582, 0.666, 0.750, 0.798);
  31. 8: VALS(0.549, 0.632, 0.716, 0.765);
  32. 9: VALS(0.512, 0.602, 0.685, 0.735);
  33. 10: VALS(0.497, 0.576, 0.658, 0.708);
  34. END;
  35. END;
  36.  
  37. BEGIN
  38. LOOKUP (DEGFREE);
  39. IF NUMSAMPS<12 THEN BEGIN
  40. WRITE ('THE CRITICAL VALUE AT .05 (ONE TAILED) IS: ');
  41. WRITELN (CRIT52:5:4);
  42. WRITE ('THE CRITICAL VALUE AT .05 (TWO TAILED) IS: ');
  43. WRITELN (CRIT51:5:4);
  44. WRITE ('THE CRITICAL VALUE AT .01 (ONE TAILED) IS: ');
  45. WRITELN (CRIT12:5:4);
  46. WRITE ('THE CRITICAL VALUE AT .01 (TWO TAILED IS: ');
  47. WRITELN (CRIT11:5:4);
  48. IF SWITCH4=1 THEN BEGIN
  49. WRITE (LST,'THE CRITICAL VALUE AT .05 (TWO TAILED) IS: ');
  50. WRITELN (LST,CRIT52:5:4);
  51. WRITE (LST,'THE CRITICAL VALUE AT .05 (ONE TAILED) IS: ');
  52. WRITELN (LST,CRIT51:5:4);
  53. WRITE (LST,'THE CRITICAL VALUE AT .01 (TWO TAILED) IS: ');
  54. WRITELN (LST,CRIT12:5:4);
  55. WRITE (LST,'THE CRITICAL VALUE AT .01 (ONE TAILED) IS: ');
  56. WRITELN (LST,CRIT11:5:4);
  57. END;
  58. END
  59. ELSE BEGIN
  60. TVALUE:=(COEFF*SQRT(NUMSAMPS-2))/SQRT(1-SQR(COEFF));
  61. A1:=0.196854;
  62. A2:=0.115194;
  63. A3:=0.000344;
  64. A4:=0.019527;
  65. Y:=1;
  66. TVALUE:=SQR(TVALUE);
  67. DF:=NUMSAMPS-2;
  68. LESSTHANONE:=FALSE;
  69. IF TVALUE<1.0 THEN BEGIN
  70. TVALUE:=1/TVALUE;
  71. TEMP:=Y;
  72. Y:=DF;
  73. DF:=TEMP;
  74. LESSTHANONE:=TRUE;
  75. END;
  76. FACTOR1:=2/(9 * Y);
  77. FACTOR2:=2/(9 * DF);
  78. L:=ABS(REALRAIS(TVALUE,0.333333)*(1-FACTOR2)-1+FACTOR1)/
  79.     SQRT((FACTOR1+REALRAIS(TVALUE,0.666667)*FACTOR2));
  80. IF DF<4 THEN L:=L*(1+0.08*INTRAISE(DF,3));
  81. X:=0.25/INTRAISE((1+L*(A1+L*(A2+L*(A3+L*A4)))),4);
  82. IF LESSTHANONE THEN RIGHTTAIL:=1-X
  83. ELSE RIGHTTAIL:=X;
  84. WRITELN ('SIGNIFICANCE = ',RIGHTTAIL:7:6);
  85. IF SWITCH4=1 THEN BEGIN
  86. WRITELN (LST,'SIGNIFICANCE = ',RIGHTTAIL:7:6);
  87. END;
  88. END;
  89. END;
  90.  
  91. PROCEDURE READDATA1;
  92. VAR XFILE:TEXT;
  93.     X:REAL;
  94.     I,MAXNUM:INTEGER;
  95.     FILENAME:STRING[12];
  96.  
  97. BEGIN
  98. XT:=0;
  99. XS:=0;
  100. YT:=0;
  101. YS:=0;
  102. XY:=0;
  103. WRITE ('ENTER FILE NAME TO CALL THE DATA: ');
  104. READLN (FILENAME);
  105. IF SWITCH4=1 THEN BEGIN
  106. WRITE (LST,'ENTER FILE NAME TO CALL THE DATA: ',FILENAME);
  107. END;
  108. ASSIGN (XFILE,FILENAME);
  109. RESET (XFILE);
  110. READLN (XFILE,X);
  111. READLN (XFILE,X);
  112. MAXNUM:=ROUND(X);
  113. WRITELN ('NUMBER OF PAIRS = ',MAXNUM);
  114. WRITELN ('X MUST BE 0 OR 1');
  115. NUMSAMPS:=MAXNUM;
  116. IF SWITCH4=1 THEN BEGIN
  117. WRITELN (LST,'NUMBER OF PAIRS = ',MAXNUM);
  118. WRITELN (LST,'X MUST BE 0 OR 1');
  119. END;
  120. FOR I:=1 TO MAXNUM DO
  121. BEGIN
  122. READLN (XFILE,X);
  123. WRITELN ('ITEM X ',I:4,' = ',X:8:3);
  124. SAMPLE1:=X;
  125. IF SWITCH4=1 THEN BEGIN
  126. WRITELN (LST,'ITEM X ',I:4,' = ',X:8:3);
  127. END;
  128.  
  129. READLN (XFILE,X);
  130. SAMPLE2:=X;
  131. WRITELN (' ':5,'Y ',I:4,' = ',X:8:3);
  132. IF SWITCH4=1 THEN BEGIN
  133. WRITELN (LST,' ':5,'Y ',I:4,' = ',X:8:3);
  134. END;
  135. XT:=XT+SAMPLE1;
  136. XS:=XS+SQR(SAMPLE1);
  137. YT:=YT+SAMPLE2;
  138. YS:=YS+SQR(SAMPLE2);
  139. XY:=XY+(SAMPLE1)*(SAMPLE2);
  140. END;
  141. CLOSE (XFILE);
  142. END;
  143.  
  144.  
  145. PROCEDURE READDATA;
  146. BEGIN
  147. XT:=0;
  148. XS:=0;
  149. YT:=0;
  150. YS:=0;
  151. XY:=0;
  152. WRITE ('NUMBER OF PAIRS = ');
  153. READLN (NUMSAMPS);
  154. WRITELN ('X MUST BE 1 OR 0');
  155. IF SWITCH4=1 THEN BEGIN
  156. WRITELN (LST,'NUMBER OF PAIRS = ',NUMSAMPS);
  157. WRITELN (LST,'X MUST BE 1 OR 0');
  158. END;
  159. FOR I:=1 TO NUMSAMPS DO
  160. BEGIN
  161. WRITE ('INPUT PAIR ',I:3,' X = ');
  162. READLN (SAMPLE1);
  163. WRITE (' ':15,'Y = ');
  164. READLN (SAMPLE2);
  165. IF SWITCH4=1 THEN BEGIN
  166. WRITELN (LST,'INPUT PAIR ',I:3,' X = ',SAMPLE1:8:3);
  167. WRITELN (LST,' ':15,'Y = ',SAMPLE2:8:3);
  168. END;
  169. XT:=XT+SAMPLE1;
  170. XS:=XS+SQR(SAMPLE1);
  171. YT:=YT+SAMPLE2;
  172. YS:=YS+SQR(SAMPLE2);
  173. XY:=XY+(SAMPLE1)*(SAMPLE2);
  174. END;
  175. END;
  176.  
  177. BEGIN
  178. REPEAT
  179. WRITELN ('POINT BISERIAL CORRELATION');
  180. WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
  181. READLN (SWITCH3);
  182. IF SWITCH3='Y' THEN SWITCH4:=1;
  183. IF SWITCH3='y' THEN SWITCH4:=1;
  184. IF SWITCH4=1 THEN BEGIN
  185. WRITELN (LST,'POINT BISERIAL CORRELATION');
  186. END;
  187. WRITE ('DO YOU WISH DISK ENTRY?');
  188. READLN (SWITCH13);
  189. IF SWITCH13='Y' THEN SWITCH14:=1;
  190. IF SWITCH13='y' THEN SWITCH14:=1;
  191. IF SWITCH14<>1 THEN READDATA;
  192. IF SWITCH14=1 THEN READDATA1;
  193. T1:=(NUMSAMPS*XY)-(XT*YT);
  194. T2:=(NUMSAMPS*XS)-SQR(XT);
  195. T3:=(NUMSAMPS*YS)-SQR(YT);
  196. COEFF:=T1/SQRT(T2*T3);
  197. WRITELN ('POINT BISERIAL CORRELATION = ',COEFF:7:6);
  198. IF SWITCH4=1 THEN BEGIN
  199. WRITELN (LST,'POINT BISERIAL CORRELATION = ',COEFF:7:6);
  200. END;
  201. FINDCRITICALVALUES (NUMSAMPS-2);
  202. WRITE ('DO YOU WANT ANOTHER RUN, (Y/N): ');
  203. READLN (C);
  204. WHILE NOT (C IN ['Y','y','n','N']) DO
  205. BEGIN
  206. WRITE ('TYPE Y FOR YES, OR N FOR NO: ');
  207. READLN (C)
  208. END;
  209. SWITCH2:=C IN ['N','n'];
  210. UNTIL SWITCH2
  211. END.
  212.